Рубрика

PHP

Всего: 175 записей

php удалить все кроме цифр (оставить только цифры)

$xml.="\t\t\t\t<param name=\"Фасовка\" unit=\"кг\">".preg_replace('/[^0-9]/','',$db->f('f_116_ru'))."</param>\r\n";
$xml.="\t\t\t\t<param name=\"Фасовка\" unit=\"кг\">".preg_replace('~[^0-9]+~','',$db->f('f_116_ru'))."</param>\r\n";
$xml.="\t\t\t\t<param name=\"Фасовка\" unit=\"кг\">".preg_replace('~\D+~','',$db->f('f_116_ru'))."</param>\r\n";

php — strtolower кроме первой буквы (слово с большой буквы)

Лучший вариант:

<?=mb_convert_case($item['name'],MB_CASE_TITLE,'UTF-8')?>

Еще вариант (не тестировался):

function mb_ucfirst($text){
	return mb_strtoupper(mb_substr($text,0,1)).mb_substr($text,1);
}
echo mb_ucfirst(mb_strtolower($str));

Не получится просто преобразовать всю строку в нижний регистр, а затем сделать первую букву заглавной.
Не будет работать для кириллицы:

<?=ucfirst(strtolower($item['name']))?>

Преобразует строку в нижний регистр, но не сделает первую букву заглавной:

<?=ucfirst(mb_strtolower($item['name'],'UTF-8'))?>

str_replace не внутри ссылок

if(!preg_match_all("|<a.* href=(.*)>(.*)".$word."(.*)</a>|U",$text,$out)){
}

http://phpclub.ru/talk/threads/Замена-слов-ссылками-с-игнорированием-замены-внутри-ссылки.59457/
Полный текст примера из источника:

//Функция замены по маске
function GlossaryFilter($text){
	//Прочли файл
	$glossfile=@file($_SERVER['DOCUMENT_ROOT']."/cache/glossary.txt");
	foreach($glossfile as $mask_word){
		$token=explode("|",$mask_word);
		//Если найдено слово из списка
		if(stristr(trim($text),$token[0])){
			//Проверка присутствие ключевого слова внутри ссылки
			if(!preg_match_all("|<a.* href=(.*)>(.*)".$token[0]."(.*)</a>|U",$text,$out)){
				//Заменяем его на ссылку
				$text=str_replace($token[0],"<a href=\"".trim($token[1])."\" target=\"_blank\">".$token[0]."</a>",$text);
			}
		}
	}
	//Вернули текст
	return $text;
}

mysql replace несколько значений

Задача: нужно выбрать строки, в которых поле начинается с выбранной буквы, не учитывая определенный набор символов в его начале — ИП, ООО и т.д.
Т.е. фильтр по алфавиту, но наименования указаны как ИП Тест или в другом любом формате.
Например, при поиске результатов, начинающихся с С должен найти ООО РЦ «Северо-Запад»
Набор неучитываемых символов задается пользователем, указывается через разделитель |:

$setting_replace='ИП|ООО|ТД|РЦ|"|«';
$part_sql='`name`';
$replaces=explode('|',$setting_replace);
foreach($replaces as $item){
	$part_sql="REPLACE(".$part_sql.",'".$item."','')";
}
$where.=" AND TRIM(".$part_sql.") LIKE '".$_GET['let']."%'";//TRIM - удаляем образовавшиеся пробелы, в нашем случае в начале

В результате поиска строк, у которых наименование начинается с «С» требуемая часть sql-запроса будет иметь вид:

 AND TRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(`name`,'ИП',''),'ООО',''),'ТД',''),'РЦ',''),'"',''),'«','')) LIKE 'С%'