标签: preg-replace

为什么preg_replace会抛出"未知修饰符"错误?

我一直收到这个错误:

警告:preg_match()[function.preg-match]:第235行的D:\ xampp\htdocs\administrator\components\com_smms\functions\plugin.php中的未知修饰符't'

上:

$PageContent = preg_replace($result->module_pregmatch, '', $PageContent);
Run Code Online (Sandbox Code Playgroud)

我在$ result-> module_pregmatch上做了一个var_dump,得到以下结果:

string '/<title>(.*)</title>/Ui' (length=23)

string '/<meta[^>]*name=["|\']description["|\'][^>]*content=["|\'](.*)["|\']\s*\/>/Ui' (length=77)

string '/<meta[^>]*name=["|\']keywords["|\'][^>]*content=["|\'](.*)["|\']\s*\/>/Ui' (length=74)

string '/<meta[^>]*name=["|\']author["|\'][^>]*content=["|\'](.*)["|\']\s*\/>/Ui' (length=72)

string '/<meta[^>]*name=["|\']copyright["|\'][^>]*content=["|\'](.*)["|\']\s*\/>/Ui' (length=75)

string '/<meta[^>]*name=["|\']robots["|\'][^>]*content=["|\'](.*)["|\']\s*\/>/Ui' (length=72)

string '/<meta[^>]*http=equiv=["|\']content-language["|\'][^>]*content=["|\'](.*)["|\']\s*\/>/Ui' (length=88)
string '/<meta[^>]*http-equiv=["|\']content-type["|\'][^>]*content=["|\'](.*)["|\']\s*\/>/Ui' (length=84)

string '/<link[^>]*href=["|\'](.*)["|\'][^>]*rel=["|\']shortcut[^>]*icon["|\'][^>]*type=["|\']image\/x-icon["|\']\s*\/>/Ui' (length=114)

string '/<link[^>]*href=["|\'](.*)["|\'][^>]*rel=["|\']alternate["|\'][^>]*type=["|\']application\/rss\+xml["|\'][^>]*title=["|\'](.*)["|\'][^>]\/>/Ui' (length=142)

string '/<link[^>]*href=["|\'](.*)["|\'][^>]*rel=["|\']alternate["|\'][^>]*type=["|\']application\/atom\+xml["|\'][^>]*title=["|\'](.*)["|\'][^>]\/>/Ui' (length=143)
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我我做错了什么吗?我一直坚持这个错误太久了...

php modifier preg-replace

12
推荐指数
1
解决办法
3万
查看次数

有没有相当于PHP的preg_replace的MySQL?

我有一个匹配MySQL中的字段,我认为我可以使用正则表达式,但似乎MySQL没有我需要的功能.这是场景:

我在PHP中有一个名为$ url的变量.假设此变量设置为字符串"/ article/my-article/page/2".我还有一个MySQL表格,我想从中提取内容.但是,存储在我的表中的URL包括通配符.

以前,我进行了此设置,以便存储在表中的值如下所示:"/ article /%/ page /%".

使用该配置,我可以运行:

SELECT * FROM urls WHERE '$url' LIKE url
Run Code Online (Sandbox Code Playgroud)

这将匹配,这是所需的功能.

我现在要做的是允许更高级的通配符,这样我的MySQL数据可以是"/ article/{{slug}}/page/{{而不是"/ article /%/ page /%". page_no}}".

我想使用相同的$ url输入创建一个匹配此数据的SQL查询.LIKE不再是正确的比较,因为我没有使用内置的"%"通配符,而是使用{{.*}}.任何想法如何实现这一目标?

php regex mysql replace preg-replace

12
推荐指数
3
解决办法
4万
查看次数

Regex/DOMDocument - 匹配和替换不在链接中的文本

我需要以不区分大小写的方式查找和替换所有文本匹配项,除非文本位于锚标记内 - 例如:

<p>Match this text and replace it</p>
<p>Don't <a href="/">match this text</a></p>
<p>We still need to match this text and replace it</p>
Run Code Online (Sandbox Code Playgroud)

搜索"匹配此文本"只会替换第一个实例和最后一个实例.

[编辑]根据戈登的评论,在这个例子中可能更喜欢使用DOMDocument.我对DOMDocument扩展并不熟悉,并且非常感谢这个功能的一些基本示例.

php regex xpath preg-replace domdocument

12
推荐指数
2
解决办法
6366
查看次数

从字符串中提取URL

我正在尝试找到一个可靠的解决方案,从一串字符中提取url.我有一个用户回答问题的网站,在源框中,他们输入了他们的信息来源,我允许他们输入网址.我想提取该URL并使其成为超链接.与Yahoo Answers的工作方式类似.

有谁知道可以做到这一点的可靠解决方案?

我找到的所有解决方案都适用于某些URL,但不适用于其他URL.

谢谢

php regex url preg-replace

12
推荐指数
1
解决办法
2万
查看次数

使用preg_replace命名反向引用

很简单; 我似乎找不到任何关于PHP preg_replace()支持命名反向引用的确定性:

// should match, replace, and output: user/profile/foo
$string = 'user/foo';
echo preg_replace('#^user/(?P<id>[^/]+)$#Di', 'user/profile/(?P=id)', $string);
Run Code Online (Sandbox Code Playgroud)

这是一个简单的例子,但我想知道这种语法(?P=name)是否完全不受支持.语法问题,还是不存在的功能?

php regex backreference preg-replace

12
推荐指数
2
解决办法
6837
查看次数

如何删除`// <![CDATA [`和end` //]]>`?

我怎样才能删除(//<![CDATA[ , //]]>)块; script元素内的标签.

<script type="text/javascript">
    //<![CDATA[
    var l=new Array();
    ..........................
    ..........................
    //]]>
</script>
Run Code Online (Sandbox Code Playgroud)

看起来它可以完成,preg_replace()但还没有找到适合我的解决方案.

我会用什么正则表达式?

php regex preg-replace cdata

12
推荐指数
3
解决办法
3万
查看次数

PHP删除换行符或CR LF没有成功

我做了一个功能,用PHP删除换行没有成功,我尝试了所有替换代码,我仍然得到这些换行,我创建一个json文件,我无法从jsonp与jquery读取它因为这些换行似乎打破一切.

function clean($text)
{
$text = trim( preg_replace( '/\s+/', ' ', $text ) );  
$text = preg_replace("/(\r\n|\n|\r|\t)/i", '', $text);
return $text;
}
Run Code Online (Sandbox Code Playgroud)

当我查看源代码时,在所有href,img和br中都会出现一些换行符,这是一个json_encode输出示例:

<a
href=\"http:\/\/example.com\/out\/content\/\" title=\"link to content website\">
Run Code Online (Sandbox Code Playgroud)

换行a.img src和br是hapenig

我可以删除这些的唯一方法打破它

$text = preg_replace("/\s/i", '', $text);
Run Code Online (Sandbox Code Playgroud)

但是你明白所有字符串都没有空间,这不是我们想要的.

php line-breaks preg-replace

12
推荐指数
2
解决办法
4万
查看次数

如何删除PHP中的空格后的所有内容?

我有一个具有名称的数据库,我想在名称空间后使用PHP替换,数据示例:

$x="Laura Smith";
$y="John. Smith"
$z="John Doe";
Run Code Online (Sandbox Code Playgroud)

我想要它回来

Laura
John.
John
Run Code Online (Sandbox Code Playgroud)

php replace preg-replace

12
推荐指数
4
解决办法
2万
查看次数

使用preg_replace进行可变长度屏蔽

我正在屏蔽字符串中的单引号(包含)之间的所有字符preg_replace_callback().但我想只preg_replace()在可能的情况下使用,但一直无法弄清楚.任何帮助,将不胜感激.

这是我使用preg_replace_callback()它产生正确的输出:

function maskCallback( $matches ) {
    return str_repeat( '-', strlen( $matches[0] ) );
}
function maskString( $str ) {
    return preg_replace_callback( "('.*?')", 'maskCallback', $str );
}

$str = "TEST 'replace''me' ok 'me too'";
echo $str,"\n";
echo $maskString( $str ),"\n";
Run Code Online (Sandbox Code Playgroud)

输出是:

TEST 'replace''me' ok 'me too'
TEST ------------- ok --------
Run Code Online (Sandbox Code Playgroud)

我尝试过使用:

preg_replace( "/('.*?')/", '-', $str );
Run Code Online (Sandbox Code Playgroud)

破折号被消耗掉,例如:

TEST -- ok -
Run Code Online (Sandbox Code Playgroud)

我尝试过的其他任何东西都不起作用.(我显然不是正则表达式专家.)这可能吗?如果是这样,怎么样?

php regex preg-replace

12
推荐指数
3
解决办法
1250
查看次数

将url转换为字符串中的链接,除非它们位于html标记的属性中

我试图转换,从textarea输入($_POST['content']),所有网址链接.

$content = preg_replace('!(\s|^)((https?://)+[a-z0-9_./?=&-]+)!i', ' <a href="$2" target="_blank">$2</a> ', nl2br($_POST['content'])." ");
$content = preg_replace('!(\s|^)((www\.)+[a-z0-9_./?=&-]+)!i', '<a target="_blank" href="http://$2"  target="_blank">$2</a> ', $content." ");
Run Code Online (Sandbox Code Playgroud)

目标链接格式:www.hello.comhttp(s)://(www).hello.com

但这似乎打破任何iframe,图像或类似,

正确的正则表达式如何忽略html标签中的url?

注意:我知道我需要两个表达式; 一个检测没有协议链接(比如www.hello.com,所以我需要预先添加)和另一个检测带协议的URL(所以不需要预先添加).

php regex url preg-replace linkify

11
推荐指数
2
解决办法
9014
查看次数