Если вам нужно использовать один SELECT
запрос, такой как @ Forty3, о котором говорилось, то несколько REPLACE
, как @ Гордон-Линофф, сказал, что, вероятно, лучше (но определенно не идеально).
Если вы можете обновить данные или использовать T-SQL, то вы можете сделать что-то подобное с https://searchsqlserver.techtarget.com/tip/Replacing-non-alphanumeric-characters-in-strings- используя-T-SQL :
while @@rowcount > 0
update user_list_original
set fname = replace(fname, substring(fname, patindex('%[^a-zA-Z ]%', fname), 1), '')
where patindex('%[^a-zA-Z ]%', fname) <> 0
Obviously ignore my paths for your own...
Zend_View
Zend_Controller_Action_HelperBroker's
addHelper methodIn /library/MegaHAL/Zend/ create View.php:
class MegaHAL_Zend_View extends Zend_View
{
public function _($string)
{
return Zend_Registry::get('translate')->_($string);
}
}
In your bootstrap:
require_once APPLICATION_PATH.'../library/MegaHAL/Zend/View.php';
$view = new MegaHAL_Zend_View();
$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
$viewRenderer->setView($view);
Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
In your view:
<p><?php echo $this->_("Hello");?></p>
I believe that will do what you want, yes?
I think that you're looking for a way to create custom view helpers.
Example:
class My_View_Helper extends Zend_View_Helper_Abstract
{
public function translate($string)
{
//...
}
}
...
$view->setHelperPath('/path/to/helpers', 'My_View_Helper');
...
Then in your views you can use it:
echo $this->translate("Hello, World!");
If configured properly Poedit can automatically extract strings from functions other than _().
Исходный метод, который вы выбрали (a * b + c * d + e)
, было бы очень трудно найти оптимальные решения просто из-за большого пространства поиска возможностей , Вы можете факторизовать число, но это то, что "+ e"
усложняет ситуацию, так как вам нужно факторизовать не только это число, а довольно много сразу под ним.
Два метода для Сразу вспоминается пружина сжатия, которая дает вам гораздо более чем 10% экономию пространства от числового представления.
64-разрядное число варьируется от (без знака):
0 to
18,446,744,073,709,551,616
или (со знаком):
-9,223,372,036,854,775,808 to
9,223,372,036,854,775,807
В обоих случаях вам нужно уменьшить количество взятых 20 символов (без запятых) до значения немного меньшего.
Во-первых, это просто BCD-ify число, которое кодирует base64 (на самом деле это слегка измененное base64, поскольку "/"
не будет кошерным в URL - вам следует использовать один из допустимых символов, таких как as "_"
).
Преобразование его в BCD сохранит две цифры (или знак и цифру) в одном байте, что даст вам сокращение пространства на 50% (10 байтов). Кодирование с помощью base 64 (который превращает каждые 3 байта в 4 символа base64) превратит первые 9 байтов в 12 символов, а этот десятый байт - в 2 символа, что в сумме составляет 14 символов - это экономия 30%.
лучший способ - просто кодировать base64 двоичным представлением. Это лучше, потому что BCD имеет небольшое количество потерь (каждая цифра требует только 3,32 бит для хранения [log 2 10], но BCD использует 4).
Работая с двоичным представлением, нам нужно только base64 кодировать 64-битное число (8 байт). Это требует 8 символов для первых 6 байтов и 3 символа для последних 2 байтов. Это 11 символов base64 для экономии 45%.
Если вы хотите максимальное максимальное сжатие , для кодирования URL доступно 73 символа:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789$-_.+!*'(),
, так что технически вы можете кодировать base-73, который, из грубых вычислений, все равно будет занимать 11 символов, но с более сложным кодом, который, на мой взгляд, не стоит.
Конечно, это максимальное сжатие из-за максимальных значений. На другом конце шкалы (1 цифра) это кодирование фактически приводит к большему числу данных (расширение, а не сжатие). Вы можете видеть, что улучшения начинаются только для чисел свыше 999,