标签: preg-replace

如何用PHP中的<a href ..替换http://或www

我创造了这个正则表达式

(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 regex preg-replace

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

如何在PHP中使用preg_replace匹配俄语单词?

我如何在PHP中使用字符串(也是俄语)匹配俄语单词?

例如,像这样的事情:

$pattern = '/?????/';
preg_replace($pattern, $replacement, $string_in_russian)
Run Code Online (Sandbox Code Playgroud)

我试着utf8_encodehtmlentities使用UTF-8标志$模式,但没有奏效.我还应该编码$ string_in_russian吗?

更新:/u标志的建议不起作用,所以我把我需要的实际代码用于.它来自Wordpress的词汇表插件(我的网站正确设置为使用俄语,它确实有效,但不是在这个例子中).所以这是代码

$glossary_title = $glossary_item->post_title;
$glossary_search = '/\b'.$glossary_title.'s*?\b(?=([^"]\*"[^"]\*")\*[^"]*$)/iu';
$glossary_replace = '&lt;a'.$timestamp.'&gt;$0&lt;/a'.$timestamp.'&gt;';
$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 regex utf-8 preg-replace internationalization

7
推荐指数
1
解决办法
2981
查看次数

街道名称与街道号码分开

我试图将街道名称与具有以下模式的街道号码分开:

  1. "街12号"---名称:街道,号码:12
  2. "street12"---名称:街道,数量:12
  3. "街道12a"---名称:街道,编号:12a
  4. "street12a"---名称:街道,编号:12a

获取街道名称的正则表达式是什么,以及在php和python中获取街道号的正则表达式?

注意:这个数字总是在街道名称之后,所以我想这应该缩短它.

谢谢.

php python regex preg-replace

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

如何将特殊字符转换为普通字符?

我试图转换像下面的字符:

ë, ä, ï, ö, 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)

php preg-replace special-characters

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

从字符串PHP中删除多字节空格

我试图使用preg_replace ?从字符串输入中消除日语全宽白色空格" "但我最终得到一个损坏的多字节字符串.

我更喜欢preg_replace而不是str_replace.这是一个示例代码:

$keywords = '?????';
$keywords = str_replace(array(' ', '?'), ' ', urldecode($keywords)); // outputs :'????'

$keywords = preg_replace("@[ ?]@", ' ',urldecode($keywords)); // outputs :'?? ????'

任何人都知道为什么会这样,以及如何纠正这种情况?

php regex utf-8 preg-replace multibyte

7
推荐指数
1
解决办法
3088
查看次数

preg_replace使用pattern作为替换数据数组的索引

我想知道是否有一种简单的方法可以将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)

php regex preg-replace

7
推荐指数
1
解决办法
3239
查看次数

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

使用preg_replace()和regex用小写替换大写字符串

是否可以使用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)

php regex preg-replace

7
推荐指数
1
解决办法
5217
查看次数

使用php preg_replace更改html链接的href属性

我正在尝试用不同的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)

php preg-replace

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

即使没有协议,也可以将URL从文本转换为链接

可以说$ 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)

php url preg-replace

6
推荐指数
2
解决办法
1498
查看次数