2013-04-30 60 views
1

我有一个小部件供用户输入在另一个站点上创建的iframe小部件的代码。从其他站点生成的iframe代码将包含几个变体,因此我想删除除了标识该小部件的6位数字以外的所有内容,然后使用插入的数字回显iframe代码。PHP preg替换iframe中的变量

我不知道为什么这是不工作...我一直在使用的代码是在这里:

<?php 

$widget_id = $vars['entity']->widget_id; 

if ($widget_id) { 

    $widget_id = preg_replace('<iframe src=(.*?)/widgets/(\d+)(.*?)</iframe>', '$2', $widget_id); 

    echo '<iframe src="http://website.com/widgets/'.$widget_id.'/player_universal" width="300" height="250"></iframe>'; 

} 

else { 
    echo "Enter the widget short code"; 
} 
+1

preg无效,您需要为其分隔“/ my regex /”以允许使用其他修饰符,即“/ [az]/i”不区分大小写,并且跳过/'s http://www.php .net/manual/en/function.preg-replace.php – Waygood 2013-04-30 16:13:13

回答

0

这应该适用于

$widget_id = preg_replace('/\<iframe src=(.*?)\/widgets\/(\d+)(.*?)\<\/iframe\>/', '$2', $widget_id); 

你通知周围的常规分隔符表达/ REG-EXP/
您可以通过使用我修改/ REG-EXP使其不区分大小写太/我

你还需要逃避所有的SPECI人REG-EXP字写得(见列表preg_quote())


http://www.php.net/manual/en/function.preg-replace.php
http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php

附: /不是您可以使用的唯一字符,我已经看过@和|

+0

虽然可以简化(。*?=。*和< and >不是元字符):''/