|
|
|
| подскажите, я запутался ((
мне необходимо проверить есть ли в строке недопустимые символы,
делаю так:
<?php
$Array = Array
(
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
"n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
"1", "2", "3", "4", "5", "6", "7", "8", "9", "0"
);
$stryng = "sdfgsdfgsdfgdr$tgd sdfgsyt";
for($i=0; $i < strlen($stryng); $i++)
{
foreach($Array as $val)
{
if($stryng[$i] == $val)
{
print "true";
}
else
{
print "false";
}
}
}
?>
|
если в строке есть хоть один из запрещенный символов, вывести false
если в строке только те символы что в массиве, вывести true
спасибо! | |
|
|
|
|
|
|
|
для: freeing
(09.02.2010 в 15:53)
| |
<?
print preg_match('/^[a-z0-9]*$/', $stryyyyyng) ? "true" : "false";
|
| |
|
|
|
|
|
|
|
для: Trianon
(09.02.2010 в 16:07)
| | массив динамический, только перебором ( | |
|
|
|
|
|
|
|
для: freeing
(09.02.2010 в 17:57)
| | и что, что динамический? preg_match - статический чтоли?
implode() и preg_quote() никто не отменял. | |
|
|
|
|
автор: .heed (09.02.2010 в 21:28) |
|
|
для: freeing
(09.02.2010 в 17:57)
| | как вариант можно создать ещё один массив с нужными значениями, и сравнить размер с размером исходного или просто сравнить массивы
$array_2 = preg_grep('/^[0-9a-z]$/', $array);
или проверить на заполненность массив с ненужными строками '/^[^0-9a-z]$/'
или preg_replace(_callback) работают с массивами | |
|
|
|
|
автор: .heed (09.02.2010 в 21:31) |
|
|
для: .heed
(09.02.2010 в 21:28)
| | просто не понял сразу что проверяется строка а не массив :) | |
|
|
|
|
|
|
|
для: .heed
(09.02.2010 в 21:31)
| | сделал так:
<?php
$Array = Array
(
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
"n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
"1", "2", "3", "4", "5", "6", "7", "8", "9", "0"
);
$Stryng = "sdfgsdfgsdfgdr$tgd sdfgsyt";
foreach(Array as $A)
{
$B.= $A;
}
if(strlen($this->Request) !== strspn($Stryng , $B))
{
// ..
}
?>
|
синтаксис или логику упростить можно? | |
|
|
|
|
|
|
|
для: freeing
(11.02.2010 в 16:32)
| | >логику упростить можно?
implode(), preg_quote(), preg_match() | |
|
|
|
|
|
|
|
для: Trianon
(11.02.2010 в 23:02)
| | Там синтаксиса килограм получуся, а тут пару функции,
к тому же перебирать два массива или один, есть разница!
спасибо конечно за предложение, но тяжеловат пример получится... | |
|
|
|
|
|
|
|
для: freeing
(12.02.2010 в 09:25)
| | Какого еще синтаксиса килограмм?
Синтаксис не в килограммах меряется, а в штуках терминалов/нетерминалов - символов исходной/целевой грамматики.
<?php
$Array = Array
(
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
"n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
"1", "2", "3", "4", "5", "6", "7", "8", "9", "0"
);
$str = "sdfgsdfgsdfgdr$tgd sdfgsyt";
print preg_match('/^['.preg_quote(implode('', $Array), '/').']+$/', $str)
? "true"
: "false";
?>
|
И таки да.
Для особо упёртых вынужден повторить. В слове String буква игрек отсутствует. | |
|
|
|
|
|
|
|
для: Trianon
(12.02.2010 в 10:07)
| | ладно, спасYбо ))) | |
|
|
|
|
|
|
|
для: Trianon
(09.02.2010 в 16:07)
| | может как то так
<?php
//..
$res = false;
foreach($this->Array["Symbol"] as $A)
{
if(current($this->Request, $A) === true)
{
$res = true;
break;
}
}
echo($res);
//..
?>
|
| |
|
|
|
|
|
|
|
для: freeing
(09.02.2010 в 15:53)
| | http://ru.php.net/strpos | |
|
|
|
|