我创造了这个正则表达式
(www|http://)[^ ]+
Run Code Online (Sandbox Code Playgroud)
匹配每个http:// ...或www ....但我不知道如何使preg_replace工作,我试过
preg_replace('/((www|http://)[^ ]+)/', '<a href="\1">\1</a>', $str);
Run Code Online (Sandbox Code Playgroud)
但它不起作用,结果是空字符串.
我如何在PHP中使用字符串(也是俄语)匹配俄语单词?
例如,像这样的事情:
$pattern = '/?????/';
preg_replace($pattern, $replacement, $string_in_russian)
Run Code Online (Sandbox Code Playgroud)
我试着utf8_encode和htmlentities使用UTF-8标志$模式,但没有奏效.我还应该编码$ string_in_russian吗?
更新:/u标志的建议不起作用,所以我把我需要的实际代码用于.它来自Wordpress的词汇表插件(我的网站正确设置为使用俄语,它确实有效,但不是在这个例子中).所以这是代码
$glossary_title = $glossary_item->post_title;
$glossary_search = '/\b'.$glossary_title.'s*?\b(?=([^"]\*"[^"]\*")\*[^"]*$)/iu';
$glossary_replace = '<a'.$timestamp.'>$0</a'.$timestamp.'>';
$content_temp = preg_replace($glossary_search, $glossary_replace, $content, 1);
Run Code Online (Sandbox Code Playgroud)
当我快速回复HTML注释时,这是我为模式获得的字符串
/\b?????s*?\b(?=([^"]*"[^"]")[^"]*$)/iu
好吧,这似乎仍然不起作用.我想也许正是这个"s"让我搞砸了(这个级别的正则表达式有点超出我但我认为它可能是复数形式),但删除它并没有帮助.
更新#2:好的,所以我决定做一个完整的"空白平板"测试 - 普通的PHP文件,包含一些英文和俄文的$ content字符串以及要替换的目标字.这是代码
$content_en = 'Nulla volutpat pretium nunc, ac feugiat neque lobortis vitae. In eu sapien sit amet eros tincidunt viverra. <b style="color:purple">Proin</b> congue hendrerit felis, et consequat neque ultrices lobortis. <b style="color:purple">Proin</b> luctus bibendum libero et molestie. Sed tristique lacus …Run Code Online (Sandbox Code Playgroud) 我试图将街道名称与具有以下模式的街道号码分开:
获取街道名称的正则表达式是什么,以及在php和python中获取街道号的正则表达式?
注意:这个数字总是在街道名称之后,所以我想这应该缩短它.
谢谢.
我试图转换像下面的字符:
ë, ä, ï, ö, etc.
Run Code Online (Sandbox Code Playgroud)
对于普通字符,例如:
e, a, i, o, etc.
Run Code Online (Sandbox Code Playgroud)
做这个的最好方式是什么?我尝试过很多东西,比如preg_replace和str_replace.
有人可以帮我吗?
- 编辑 -
我试过的是:
$ts = array("[À-Å]","Æ","Ç","[È-Ë]","/[Ì-Ï]/","/Ð/","/Ñ/","/[Ò-ÖØ]/","/×/","/[Ù-Ü]/","/[Ý-ß]/","/[à-å]/","/æ/","/ç/","/[è-ë]/","/[ì-ï]/","/ð/","/ñ/","/[ò-öø]/","/÷/","/[ù-ü]/","/[ý-ÿ]/");
$tn = array("A","AE","C","E","I","D","N","O","X","U","Y","a","ae","c","e","i","d","n","o","x","u","y");
$title = preg_replace($ts, $tn, $text);
Run Code Online (Sandbox Code Playgroud) 我试图使用preg_replace ?从字符串输入中消除日语全宽白色空格" "但我最终得到一个损坏的多字节字符串.
我更喜欢preg_replace而不是str_replace.这是一个示例代码:
$keywords = '?????';
$keywords = str_replace(array(' ', '?'), ' ', urldecode($keywords)); // outputs :'????'
$keywords = preg_replace("@[ ?]@", ' ',urldecode($keywords)); // outputs :'?? ????'
任何人都知道为什么会这样,以及如何纠正这种情况?
我想知道是否有一种简单的方法可以将a中的匹配模式preg_replace用作替换值数组的索引.
例如
preg_replace("/\{[a-z_]*\}/i", "{$data_array[\1]}", $string);
Run Code Online (Sandbox Code Playgroud)
搜索{xxx}并将其替换为$ data_array ['xxx']中的值,其中xxx是模式.
但是这个表达式不能用作无效的php.
我写了以下函数,但我想知道是否可以简单地完成它.我可以使用回调,但是我如何将$ data_array传递给它呢?
function mailmerge($string, $data_array, $tags='{}')
{
$tag_start=$tags[0];
$tag_end =$tags[1];
if( (!stristr($string, $tag_start)) && (!stristr($string, $tag_end)) ) return $string;
while(list($key,$value)=each($data_array))
{
$patterns[$key]="/".preg_quote($tag_start.$key.$tag_end)."/";
}
ksort($patterns);
ksort($data_array);
return preg_replace($patterns, $data_array, $string);
}
Run Code Online (Sandbox Code Playgroud) 我如何转换这样的字符串:
<span class="it">CONTENT</span>
Run Code Online (Sandbox Code Playgroud)
进入:
{it}CONTENT{/it}
Run Code Online (Sandbox Code Playgroud)
在保持内容完整的同时?
是否可以使用preg_replace和更换小写的大写字母regex?
例如:
以下字符串:
$x="HELLO LADIES!";
Run Code Online (Sandbox Code Playgroud)
我想将其转换为:
hello ladies!
Run Code Online (Sandbox Code Playgroud)
使用preg_replace():
echo preg_replace("/([A-Z]+)/","$1",$x);
Run Code Online (Sandbox Code Playgroud) 我正在尝试用不同的URL替换大字符串中的所有链接href.使用以下代码它似乎只替换第二个链接,保留第一个完整,有人可以帮助我吗?
$string_of_text = '<a href="http://www.php.net/">PHP</a> <a href="http://www.apache.org/">Apache</a>';
echo preg_replace('/<a(.*)href="(.*)"(.*)>/','<a$1href="javascript:alert(\'Test\');"$3>',$string_of_text);
Run Code Online (Sandbox Code Playgroud) 可以说$ content是textarea的内容
/*Convert the http/https to link */
$content = preg_replace('!((https://|http://)+[a-z0-9_./?=&-]+)!i', '<a target="_blank" href="$1">$1</a> ', nl2br($_POST['helpcontent'])." ");
/*Convert the www. to link prepending http://*/
$content = preg_replace('!((www\.)+[a-z0-9_./?=&-]+)!i', '<a target="_blank" href="http://$1">$1</a> ', $content." ");
Run Code Online (Sandbox Code Playgroud)
这对于链接工作正常,但意识到当图像在文本中时它正在打破标记...
我现在这样想:
$content = preg_replace('!\s((https?://|http://)+[a-z0-9_./?=&-]+)!i', ' <a href="$1">$1</a> ', nl2br($_POST['content'])." ");
$content = preg_replace('!((www\.)+[a-z0-9_./?=&-]+)!i', '<a target="_blank" href="http://$1">$1</a> ', $content." ");
Run Code Online (Sandbox Code Playgroud)
因为图像是受到尊重的,但问题是现在不会转换带http://或https://格式的网址..:
google.com - >未转换(按预期)
www.google.com - >转换得很好
http://google.com - >未转换(意外)
https://google.com - >未转换(意外)
我错过了什么?
-编辑-
当前几乎可行的解决方
$content = preg_replace('!(\s|^)((https?://)+[a-z0-9_./?=&-]+)!i', ' <a href="$2" target="_blank">$2</a> ', nl2br($_POST['content'])." ");
$content …Run Code Online (Sandbox Code Playgroud)