在这个论坛和网络上有很多关于这个问题的问题。\n但我不明白。
\n\n这是我的代码:
\n\nfunction updateGuideKeywords($dal)\n{\n $pattern = "/[^a-zA-Z-\xc3\xaa\xc3\xa0\xc3\xa9]/";\n $keywords = preg_replace($pattern, \'\', $_POST[\'keywords\']);\n echo json_encode($keywords);\n}\nRun Code Online (Sandbox Code Playgroud)\n\n现在,输入是Pr\xc3\xaat-\xc3\xa0-porter,输出是"Pr\\u00eat-\\u00e0-porter"。
为什么我会得到 \'\\u00e\' ?
\n\n我怎样才能改变我的模式以包含这些字符\xc3\xaa,\xc3\xa0以及\xc3\xa9?
编辑
\nhumm...因为它看起来像unicode/字符问题,我可能会寻求我在本页上找到的解决方案找到的解决方案。
在这里他们建议这样做:
\n\n$chain="pr\xc3\xaat-\xc3\xa0-porter";\n\n$pattern = array("\'\xc3\xa9\'", "\'\xc3\xa8\'", "\'\xc3\xab\'", "\'\xc3\xaa\'", "\'\xc3\x89\'", "\'\xc3\x88\'", "\'\xc3\x8b\'", "\'\xc3\x8a\'", "\'\xc3\xa1\'", "\'\xc3\xa0\'", "\'\xc3\xa4\'", "\'\xc3\xa2\'", "\'\xc3\xa5\'", "\'\xc3\x81\'", "\'\xc3\x80\'", "\'\xc3\x84\'", "\'\xc3\x82\'", "\'\xc3\x85\'", "\'\xc3\xb3\'", "\'\xc3\xb2\'", "\'\xc3\xb6\'", "\'\xc3\xb4\'", "\'\xc3\x93\'", "\'\xc3\x92\'", "\'\xc3\x96\'", "\'\xc3\x94\'", "\'\xc3\xad\'", "\'\xc3\xac\'", "\'\xc3\xaf\'", "\'\xc3\xae\'", "\'\xc3\x8d\'", "\'\xc3\x8c\'", "\'\xc3\x8f\'", "\'\xc3\x8e\'", "\'\xc3\xba\'", "\'\xc3\xb9\'", …Run Code Online (Sandbox Code Playgroud) 使用正则表达式和 php.ini 时是否有跳过第一个匹配项?
或者是否有某种方法可以使用 str_replace 来实现此目的。
谢谢
更新 我试图从另一个字符串中删除一个字符串的所有实例,但我想保留第一次出现的情况,例如
$toRemove = 'test';
$string = 'This is a test string to test to removing the word test';
Run Code Online (Sandbox Code Playgroud)
输出字符串将是:
这是一个测试字符串,用于测试删除单词test
可能的重复:
正则表达式:匹配除
我需要您的帮助来在 PHP 中使用正则表达式来否定选择。所以我有一个像这样的字符串:“你好,我的名字是汤姆”
我需要做的是删除这个字符串中的所有内容,女巫不是“tom”或“jack”或“alex”,所以我尝试了:
$MyString = "Hello my name is tom"
print_r(preg_replace('#^tom|^jack|^alex#i', '', $MyString));
Run Code Online (Sandbox Code Playgroud)
但这不起作用...
你能帮我吗?谢谢
我正在使用一个 CMS 系统,该系统坚持在</figure>和之间放置大量垃圾标记和空标签<figcaption>标签之间放置大量垃圾标记和空标签。
我正在尝试使用正则表达式来匹配并删除此垃圾(遗憾的是修复 CMS 是不可能的)。
\n\n我似乎创建了一个正则表达式,它有点太饿了,而且还剥离了标签。
\n\n$str = \'<p></p><figure class="image"><img title="Screenshot 2014-08-26 16.34.12.png" alt="Screenshot 2014-08-26 16.34.12.png" src="/image/Screenshot%202014-08-26%2016.34.12.png" class="image-style-none" typeof="foaf:Image"></figure><p></p>\n <p>\xc3\x82 </p>\n <p></p><figcaption>Screenshot 2014-08-26 16.34.12.png</figcaption><p></p>\n <p> </p>\n <p> </p>\n <p></p>\';\n\npreg_replace(\'#(</figure>).*?(<figcaption>)#s\', \'[replace-me]\', $str);\nRun Code Online (Sandbox Code Playgroud)\n\n有人能指出我正确的方向吗?
\n这有效:
\n\necho preg_replace("/TesT/i","<b>FOUND</b>","TEST"); // works as expected prints FOUND\nRun Code Online (Sandbox Code Playgroud)\n\n为什么下面这个不起作用?在我的项目中,我想突出显示搜索结果,无论搜索输入的大小写/书写如何
\n\necho preg_replace("/\xc3\xbc\xc3\xb6\xc3\x84/i","<b>FOUND</b>","\xc3\x9c\xc3\x96\xc3\x84"); // does NOT work as expected prints \xc3\x9c\xc3\x96\xc3\x84 \nRun Code Online (Sandbox Code Playgroud)\n\n我也尝试了以下方法,但也不起作用:
\n\nmb_internal_encoding("UTF-8");\nmb_regex_encoding("UTF-8");\nmb_ereg_replace("/\xc3\xbc\xc3\xb6\xc3\x84/i","<b>FOUND</b>","\xc3\x9c\xc3\x96\xc3\x84");\nRun Code Online (Sandbox Code Playgroud)\n\n更新:
\n据我所知,我确保页面上的所有内容、脚本、连接都是 UTF-8
我有一个这样的文件名
鸟人.2014.DVDSCR.X264-PLAYNOW.mkv
Divergent (2014) 720p Blu-Ray x2649 [双音频][英语 DD 5.1 + 印地语 DD 5.1] - Mafiaking - TeamTNT ExClusive.mkv
Cradle 2 The Grave 2003 HDTVRip 720p 双音频[英语+印地语] ~ BRAR
我必须将电影名称和年份分开
为了获得使用年份 perg_match 像
$s="Divergent (2014) 720p Blu-Ray x2649 [Dual-Audio][English DD 5.1 + Hindi DD 5.1] - Mafiaking - TeamTNT ExClusive.mkv";
if (preg_match('/\b\d{4}\b/', $s, $matches)) {
$year = $matches[0];
}
echo $year;
Run Code Online (Sandbox Code Playgroud)
结果:- 2014 //工作完美
但我也想得到像这样的电影名称
发散型
鸟人
摇篮 2 坟墓
我也检查这个链接
但什么也没发生
我怎么得到它?请帮助或提供提示来实现它。
我想在 Javascript 中创建一个正则表达式,突出显示列表中所有排除的字符<span></span>。有人可以帮我创建这个复杂的正则表达式吗?
示例文本:This is a text \xe8\x8e\x8a\xe5\xad\x90 that contains \xc2\xb7 forbidden characters.
需要转换为:This is a text <span>\xe8\x8e\x8a</span><span>\xe5\xad\x90</span> that contains <span>\xc2\xb7</span> forbidden characters.
允许的字符列表:a-z, A-Z, 0-9, +%#()*+,-/:;<=>?_\xe2\x82\xac\xc2\xa3\xc2\xa5\xc2\xa7\xc3\x84\xc3\x85\xc3\x9c\xc3\xa4\xc3\xa8\xc3\xa9\xc3\xac\xc3\xb1\xc3\xb2\xc3\xb6\xc3\xb9\xc3\xbc=\xe2\x80\x9c\xe2\x80\x9d\xe2\x80\x98\xe2\x80\x99\'"
谢谢你帮我!
\n我对 iframe 使用延迟加载脚本,我需要制作 preg_replace 代码以将 src 更改为 data-src。
我尝试了这样的事情但我失败了:
$cache = preg_replace('%<iframe.*?src=["\'](.*?)["\'].*?/?>%i', 'data-src="$1"', $content);
Run Code Online (Sandbox Code Playgroud)
我的代码仅打印,data-src="the link"没有完整的 iframe 代码。
几个月前我写了这段代码(在 woocommerce/single-product/price.php 上),但我丢失了它,我很幸运地恢复了代码,但处于第一阶段。之前结果给了我一千个分离,我认为是因为“preg_replace”函数。
<?php echo '$' . round((preg_replace('/^[\.]/', '', $product->get_price()) *1.04)); ?>
Run Code Online (Sandbox Code Playgroud)
显示的结果类似于:$311896。我正在寻找的格式: $311.896
我将向您展示它是如何工作的。我向支付网关添加税(这就是我使用公式 x1.04 的原因)。它是这样显示的:
如果格式正确,则为原价,但我的代码不正确。这是一个令人头痛的问题。
我需要一些有关 PHP 的帮助,因为我很难摆脱style type="text/css"标签。我想删除样式标记以将其替换为空字符串。
当我尝试这个时:
if (strpos($inbox_message, '<style type="text/css">') !== false) {
echo (preg_replace('/<style[^>]*>(([^<]|[<[^\/]|<\/[^s]|<\/s[^t])*)<\/style>/i','',$inbox_message));
}
Run Code Online (Sandbox Code Playgroud)
它仍然会在 html 页面中显示样式标签。
这是它显示的内容:
<style type="text/css"> body {position: relative; font-family: Segoe UI; font-size: 12px; } .pageHeader {color: #9C9C9C; font-size: 160%; padding: 0px 0px 6px 0px} .pageHeaderLogo {padding-right: 15px;} .pageHeaderTitle{border-left: 1px solid #CCCCCC; padding: 5px;} .pageFooter {width: 100%; background-color: #f2f2f2; font-size: 12px; font-family: Segoe UI; padding:4px 4px 4px 4px; } .pageFooterLogo {text-align:right; width:100%} .padCells { padding: 0px 6px 0px 0px; } .preHeader {display: none …Run Code Online (Sandbox Code Playgroud) preg-replace ×10
php ×9
regex ×6
html ×2
css ×1
iframe ×1
javascript ×1
match ×1
preg-match ×1
price ×1
replace ×1
str-replace ×1
string ×1
woocommerce ×1
wordpress ×1