2013-04-30 57 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 >不是元字符):''/