如何用PHP中的UTF-8支持替换所有非字母字符
我想从字符串中删除所有非字母字符.问题是我不知道字母范围,因为它是UTF8字符串. 它可以是英语,հայերեն,ქართული,ї. 我通常会做这样的事情: $str = preg_replace('/[^a-zA-Z]/', '', $str); 或 $str = preg_replace('/[^\w]/u', '', $str); ,但他们都清除了外国角色. 有什么想法? 解决方案 更新:对于Unicode,Regexp看起来像 [^\p{L}\s]+ (不更换空格) 它将用UTF8支持代替所有非α字符. \P{L}+ - 匹配任何非字母符号 \p{P}+ - 仅删除标点符号 这是一些参考文档,可以有用: REGEXP UTF8上的教程 unicode targin properties 其他解决方案 使用 unicode targinal properties : $str = preg_rep
0 2023-05-30
编程技术问答社区
is_numeric,intval,ctype__digit ..您可以依靠它们吗?
is_numeric,intval,ctype__digit ..您可以依靠它们吗? 或我必须使用正则票据? function isNum($str) { return (preg_match("/^[0-9]+$/", $str)); } 你们怎么看?我很愚蠢吗? 解决方案 ctype_digit和is_numerict之间的一个重要区别是负值和浮点数. is_numeric(-10)将返回true而 'ctype_digit(-10)'将为false 也将ctype_digit(12.50)将返回false而 is_numeric(12.50)将是true 因此,这两个都方便取决于您的域逻辑的上下文. 其他解决方案 is_numeric,intval和ctype_digit都做不同的事情. is_numeric 是否会告诉您是否内容变量是数字(即,如果是浮点或整数值). 最佳方法可能是检查is_numeric是
0 2023-05-30
编程技术问答社区
PHP: 检查任何拉丁语系语言中的字母字符?
使用PHP我想检查字符串仅包含字母字符(我不想允许任何数字或特殊字符,例如!@#$%^&*). ctype_alpha()为此目的看起来很棒. 问题是我想允许重音字母,例如法语等.例如,我想允许"lórien". 我知道ctype_alpha()可以与set_locale()一起使用,但对于此用例,这似乎仍然太有限了,因为我想允许所有基于拉丁语的语言的字符. 有什么想法如何最好地完成此操作? 注意:发表在我如何检测非西部字符的解决方案? 非常适合明确检测非拉丁字符,但它允许特殊的字符和空白,我不想允许: preg_match('/[^\\p{Common}\\p{Latin}]/u', $string) 我想要这样可用的东西,但是将允许的字符限制为 字母字符 (因此没有特殊字符,例如!@#$%^&). 解决方案 此正则是什么: ^\p{Latin}+$ 工作正则示例: https://regex101.com/r/r/i5b2mc/
0 2023-05-30
编程技术问答社区
在PHP中消毒句子
标题听起来可能很奇怪,但是我试图设置这个preg_replace,以照顾杂乱无章的作家为文本出版物.它必须: 如果有一个感叹号,则不应在行中再有另一个. 如果有一个. 当昏迷前有一个+空间时,应将其简化为一无所有. 句子不能以逗号的范围开始或结束. 绝不应该有2个相同的字母连接在一起. 逗号后必须始终存在一个空间. 例如: ,我的房子是绿色的. 我的房子...是绿色的,很好!!! 我的房子是绿色的,很不错! 最终结果应始终是: 我的房子是绿色的! 是否有一个已经建立的正则是这样? 解决方案查看 fakerainbrigand 's 解决方案下面! 解决方案 我可能必须将其用于自己的网站...好主意!
0 2023-05-30
编程技术问答社区
解析搜索字符串中的短语和关键词
我需要在PHP中解析关键字和短语的搜索字符串,例如 字符串1:value of "measured response" detect goal "method valuation" study 将产生:value,of,measured reponse,detect,goal,method valuation,study 如果字符串具有: ,我还需要它工作 没有用引号封闭的短语, 任何数量的短语包裹在引号之外的任何数量的关键字中, 引号中只有短语, 只有空间分离的关键字. 我倾向于将preg_match与模式'/(\".*\")/'一起使用,以将短语放入数组中,然后从字符串中删除短语,然后最终将关键字处理到数组中.我只是无法将所有东西拼在一起! 我还在考虑用逗号替换引号之外的空间.然后将它们爆炸到数组中.如果这是一个更好的选择,我该如何使用preg_replace? 做到这一点 有更好的方法吗?帮助!非常感谢,大家 解决方案 preg_
0 2023-05-30
编程技术问答社区
日期验证的正则表达式帮助-dd/mm/yyyy-PHP
有人可以向我展示此正则表达式的错误: if(preg_match("/^[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}$/", $_POST["date"]) === 0) { echo 'error'; } 基本上,我希望每次都显示错误消息 - 除非格式正确(dd/mm/yyyy). 我对上述问题做了什么? 非常感谢任何指示. - 发布后不久上面更新了以下等级 - 不便之处歉意 - 解决方案 我认为您应该逃脱斜线/^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}$/ 其他解决方案 您需要逃脱斜线,因为您将其用作正则界限 /^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}$/ 或使用不同的正则分界符 #^[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}$# 其他解决方案 您也可以使用此: ([0-2]\d|3[0-1])\/(0\d|1[0-2])\
0 2023-05-30
编程技术问答社区
街道号码单独的街道名称
我试图将街道名称与具有以下模式的街道数字分开: "街12" ---名称:街道,编号:12 " street12" ---名称:街道,编号:12 "街道12a" ---名称:街道,编号:12a " street12a" ---名称:街道,编号:12a 获得街道名称的正则是什么,以及在PHP和Python中获得街道号 注意:这个数字总是在街道名称之后,所以我想应该缩短它. 谢谢. 解决方案 尝试一下,看看它是否适合您: $subjects = array( "street 12", "street12", "street 12a", "street12a" ); foreach( $subjects as $subject ) { if ( preg_match('/([^\d]+)\s?(.+)/i', $subject, $result) ) { var_dump( $result ); } } die_r(
2 2023-05-30
编程技术问答社区
正则匹配有和没有特殊/重音字符的字符串?
是否有正则表达式可以匹配有和没有特殊字符的特定字符串?可以这么说的特殊角色不敏感. 喜欢céra将匹配cera,反之亦然. 有什么想法? 编辑:我想匹配带有和没有特殊字符的特定字符串.不只是任何字符串/字符. 测试示例: $clientName = 'céra'; $this->search = 'cera'; $compareClientName = strtolower(iconv('utf-8', 'ascii//TRANSLIT', $clientName)); $this->search = strtolower($this->search); if (strpos($compareClientName, $this->search) !== false) { $clientName = preg_replace('/(.*?)('.$this->search.')(.*?)/iu', '$1
0 2023-05-30
编程技术问答社区
如何使用regex在php中提取文本
我的文字: 12a49803-713c-4204-a8e6-248e554a352d_ Content-Type: text/plain; charset="iso-8859-6" Content-Transfer-Encoding: base64 DQrn0Ocg0dPH5MkgyszR6sjqySDl5iDH5OfoyuXq5A0KDQrH5OTaySDH5NnRyOrJIOXP2ejlySAx MDAlDQogCQkgCSAgIAkJICA= --_12a49803-713c-4204-a8e6-248e554a352d_ Content-Type: text/html; charset="iso-8859-6" Content-Transfer-Encoding: base64 PGh0bWw+DQo8aGVhZD4NCjxzdHlsZT48IS0tDQouaG1tZXNzYWdlIFANCnsNCm1hcmdpbjowcHg7 我想提取 iso-8859-6
0 2023-05-30
编程技术问答社区
从字符串中获取电子邮件-TREGEX语法 + preg_match_all
我试图从字符串中收到电子邮件: $string = "bla bla pickachu@domain.com MIME-Version: balbasur@domain.com bla bla bla"; $matches = array(); $pattern = '\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b'; preg_match_all($pattern,$string,$matches); print_r($matches); 我遇到的错误是: 定界符不得是字母数字或后斜线 我从这里得到了钟声语法, 解决方案 喜欢这个 $pattern = '/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i'; 或较小版本:) $pattern = '/[a-z\d._%+-]+@[a-z\d.-]+\.[a-z]{2,4}\b/i'; 其他解决方案 使用PCRE RE
0 2023-05-30
编程技术问答社区
如何在Laravel中使用逗号分离值的列上使用"位置"
我正在使用Laravel框架的PHP.我想从包含用户ID的表中获取行.这里的问题是用户ID是整数值,列(作者)包含一个以上的逗号分隔的整数值.这是示例. DB::table('stories')->where('author','4')->get(); 作者列有值:第1:2,4,5 |第2行:1,3,14 |第3行:4,5 我将获得第1行和第3行.因此,请帮助我获得正确的行. 解决方案 您可以使用whereRaw喜欢 DB::table('stories')->whereRaw("find_in_set('4',author)")->get(); 其他解决方案 首先使用 将您的string转换为array $row = "2,4,5"; $idsArr = explode(',',$row); DB::table('stories')->whereIn('author',$idsArr)->get();
0 2023-05-30
编程技术问答社区
YouTube Vimeo视频ID来自嵌入式代码或带有PHP正则表达式的URL
我想通过其嵌入代码或从URL获取YouTube或Vimeo的视频ID,任何解决方案都可以使用PHP? 解决方案 您可以使用 preg_match 获取IDS.我将稍后在此答案中自己介绍表达式,但这是如何使用preg_match的基本思想: preg_match('expression(video_id)', "http://www.your.url.here", $matches); $video_id = $matches[1]; 这是您询问的每种可能输入的表达式的细分.我包括了每个显示一些测试用例和结果的链接. 对于 youtube URL ,例如http://www.youtube.com/watch?v=89OpN_277yY,您可以使用/a>表达式: v=(.{11}) YouTube嵌入式代码可以看起来像这样(一些无关的东西):
0 2023-05-30
编程技术问答社区
PHP Regex逃脱了特殊角色
我编写了以下代码(是的,它确实有效),并且想知道为什么我不需要逃脱模式中的''字符,因为它们被PHP手册视为"特殊"字符. http://www.php.net/manual/enual/en/function.preg-Quote.php var_dump(preg_match('//', "", $matches)); echo " "; var_dump(htmlentities($matches[0])); echo " "; 输出: int(1) string(12) "" 解决方案 仅在上列出的字符需要在PHP Regex匹配/更换中逃脱. 可以用作 delimiter ,在给定的示例中不需要逃脱,因为您已经具有/(slash)充当定界符. 参考有关链接 preg_quote() 函数可用于逃脱琴弦以将其注入到模式中,其可选第二个参数可
0 2023-05-30
编程技术问答社区
preg_split()的正则表达式
这是我的文件: 0.0 5.0 5.0 6.0 7.0 2.0 5.0 2.0 1.0 5.0 5.0 1.0 2.0 7.1 5.0 5.0 0.0 5.0 5.0 5.0 2.0 5.0 1.0 5.0 6.0 6.0 6.0 6.0 1.0 7.1 5.0 5.0 0.0 6.0 1.0 6.0 5.0 5.0 1.0 6.0 5.0 7.0 1.0 5.0 6.0 6.0 5.0 6.0 0.0 5.0 2.0 1.0 6.0 5.0 6.0 2.0 1.0 2.0 1.0 5.0 7.0 5.0 1.0 5.0 0.0 7.0 1.0 1.0 2.0 1.0 5.0 6.0 2.0 2.0 5.0 2.0 2.0 6.0 2.0 7.0 0.0 5.0 5.0 6.0 5.0 2.0 5.0 1.0 2.0 5.0 5.0 5.0 5.0 1.0 1.0 5.0 0.0 2.0 6.0 1.0 5.0 7.0 5.0 1.0 6.0 7.0 1.0 5.0 1.0 2.0
0 2023-05-30
编程技术问答社区
PHP:从字符串中删除URL
我有很多字符串(Twitter推文),当我回荡它们时,我想从中删除链接. 我无法控制字符串,即使所有链接都以HTTP开头,它们也可以以"/"或a;""结尾.没有,被遵循或不遵循空间. 另外,有时链接和单词之间没有空间. 这样的字符串的一个示例: The Third Culture: The Frontline of Global Thinkinghttp://is.gd/qFioda;via @edge 我已经尝试与Preg_replace一起玩,但无法提出适合所有例外的解决方案: itemTitle); ?> 任何想法我应该如何继续? 编辑:我尝试过
0 2023-05-30
编程技术问答社区
使用CURL从外部网页上选择一个特定的div
嗨,任何人都可以帮助我如何从网页的内容中选择特定的div. 假设我想从网页http://www.test.com/page3.php中获得div. 我当前的代码看起来像这样:(不工作) //REG EXP. $s_searchFor = '@^/.dont know what to put here..@ui'; //CURL $ch = curl_init(); $timeout = 5; // set to zero for no timeout curl_setopt ($ch, CURLOPT_URL, 'http://www.test.com/page3.php'); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); if(!preg_match($s_searchFor, $ch)) { $file
0 2023-05-30
编程技术问答社区
以这样的方式解析纯文本,可以识别出一个自定义的if语句
我有以下字符串: $string = "The man has {NUM_DOGS} dogs." 我正在通过以下功能运行它来解析它: function parse_text($string) { global $num_dogs; $string = str_replace('{NUM_DOGS}', $num_dogs, $string); return $string; } parse_text($string); 其中$num_dogs是预设变量.根据$num_dogs,这可以返回以下任何字符串: 男人有1只狗. 男人有2只狗. 男人有500只狗. 问题在于,在"男人有1只狗"的情况下, dog 是复合的,这是不希望的.我知道可以简单地通过不使用parse_text函数来解决这可以解决: 以下操作. if($num_dogs = 1){ $string = "The man has 1 dog."; }
0 2023-05-30
编程技术问答社区
如何使用正则表达式删除标签及其内容?
$ str ='一些文本标签内容更多文本'; 我的问题是: 如何检索 .. 之间的内容tag contents ? 之间 和 如何从$str? 中删除及其内容 我正在使用php. 谢谢. 解决方案 如果MY_TAG无法嵌套,请尝试以获取匹配项: preg_match_all('/(.*?)/s', $str, $matches) 要删除它们,请使用 preg_replace 而不是. 其他解决方案 为了拆卸我最终使用了此操作: $str = preg_replace('~~Usi', "", $str); 使用〜而不是/用于定界符求解的错误,因为最终标签中的后斜线,这似乎是一个问题,即使逃脱也是一个问题.从开头标签中消除>允许属性或其他字符,并且仍然获得标签及其所有内容. 这仅
0 2023-05-30
编程技术问答社区